#include <57header.h>

int num = 0;

// 定义一个锁
pthread_mutex_t my_lock;

void *func(void *p){

    for(int i=0; i<10000000; i++){
        pthread_mutex_lock(&my_lock);
        num++;
        pthread_mutex_unlock(&my_lock);
    }

    return NULL;
}
int main(int argc,char*argv[])
{
    // 初始化锁: 不设置锁的属性 -> 默认初始化为互斥锁
    pthread_mutex_init(&my_lock, NULL);
    // 下面也是一种初始化互斥锁的方式
    //pthread_mutex_t my_lock = PTHREAD_MUTEX_INITIALIZER;


    pthread_t son_id;
    pthread_create(&son_id, NULL, func, NULL);

    for(int i=0; i<10000000; i++){
        pthread_mutex_lock(&my_lock);
        num++;
        pthread_mutex_unlock(&my_lock);
    }

    pthread_join(son_id, NULL);
    printf("num: %d \n", num);

    pthread_mutex_destroy(&my_lock);
    return 0;
}

